비전공자도 이해할 수 있는 AWS 중급실전 (보안, 가용성편)
VPC, NAT 게이트웨이, 인터넷 게이트웨이, 서브넷, 라우팅 테이블, 베스천 호스트의 개념에 대한 정리 포스트
정보
인프런 - 비전공자도 이해할 수 있는 AWS 중급실전 (보안, 가용성편) 강의 내용 정리 포스트에요.
이 링크를 통해 구매하시면 제가 수익을 받을 수 있어요. 🤗
🏠 VPC
[01-vpc]
%2F01-vpc.webp&w=3840&q=75)
VPC
(Virtual Private Cloud
)란 가상의 네트워크 공간(컴퓨터들끼리 서로 통신하는 공간)을 의미해요.
( AWS
에서 기본 VPC
를 제공해주기 때문에 직접 만들지 않고도 사용할 수 있어서 인지하지 못했을 거예요. )
0️⃣ VPC의 핵심 개념
VPC
를 통해 IP 주소 범위
, 서브넷
, 라우팅 테이블
, 게이트웨이
등을 직접 설정하여 네트워크를 완전히 제어할 수 있어요.
이를 통해 클라우드 환경에서도 온프레미스
와 같은 수준의 네트워크 보안과 격리를 구현할 수 있어요.
각 VPC
는 다른 VPC
와 완전히 분리되어 있어 보안성이 높아요.
1️⃣ CIDR 블록 설정
정보
계산 방법에 대한 설명 필요 시 검색으로 찾아보시면 돼요. ( 계산 사이트 )
CIDR
을 쉽게 설명하면 VPC
에 할당되는 IP 주소
범위를 결정하는 방법을 의미해요.
예를 들어 10.10.0.0/30
과 같이 설정하면 해당 IP 범위
내에서 서브넷
을 나누어 사용할 수 있어요.
CIDR
블록 설정 시 향후 확장을 고려하여 충분한 IP 주소 공간을 확보하는 것이 중요해요.
( 만약 10.10.0.0/30
과 같이 설정하면 10.10.0.0
~ 10.10.0.3
까지의 IP 주소 범위
를 가질 수 있어요. )
2️⃣ 사설 IP와 공인 IP
- 공인 IP: 인터넷에서 사용되는
IP 주소
( 사설 IP가 아닌 IP 주소 ) - 사설 IP: 특정
VPC
내에서만 사용되는IP 주소
(10.0.0.0 ~ 10.255.255.255
,172.16.0.0 ~ 172.31.255.255
,192.168.0.0 ~ 192.168.255.255
)
특정 EC2
의 공인 IP 주소
가 132.0.0.0
고 사설 IP 주소
가 10.0.0.0
라면 외부에서는 132.0.0.0
으로만 접근이 가능하고, 같은 VPC
내부에서는 132.0.0.0
과 10.0.0.0
둘 다 접근이 가능해요.
( 네이버에 내 IP 주소라고 검색했을 때 나오는 주소는 공인 IP 주소
에요. )
3️⃣ AWS에서 VPC 생성하기
정보
10.0.0.0/24
라고 설정하면10.0.0.0 ~ 10.0.0.255
까지의IP 주소
범위를 가질 수 있어요.
[02-vpc_생성]
%2F02-vpc_%25EC%2583%259D%25EC%2584%25B1.png&w=3840&q=75)
🗂️ 서브넷
[03-서브넷]
%2F03-%25EC%2584%259C%25EB%25B8%258C%25EB%2584%25B7.webp&w=3840&q=75)
서브넷(Subnet
)은 VPC
내에서 IP 주소
범위를 나누어 생성된 네트워크 세그먼트예요.
각 서브넷은 특정 가용 영역(AZ)에 속하며, 용도에 따라 퍼블릭과 프라이빗으로 구분해요.
0️⃣ 서브넷의 종류
- 퍼블릭 서브넷: (외부 통신 가능) 인터넷 게이트웨이를 통해 인터넷과 통신할 수 있는 서브넷이에요
- 프라이빗 서브넷: (외부 통신 불가능) 인터넷과 직접 통신할 수 없으며, NAT 게이트웨이를 통해 아웃바운드 트래픽만 허용되는 서브넷이에요
1️⃣ 퍼블릭 서브넷
퍼블릭 서브넷은 인터넷 게이트웨이를 통해 인터넷에 직접 접근할 수 있는 서브넷이에요.
주로 웹 서버
, 로드 밸런서
, NAT 게이트웨이
등을 배치해요.
퍼블릭 서브넷의 인스턴스는 퍼블릭 IP 주소
나 탄력적 IP 주소
를 가져야 인터넷과 통신할 수 있어요.
2️⃣ 프라이빗 서브넷
프라이빗 서브넷은 인터넷에 직접 접근할 수 없는 서브넷이에요.
데이터베이스
, 애플리케이션 서버
등 보안이 중요한 리소스들을 배치해요.
NAT 게이트웨이
를 통해서만 인터넷으로 아웃바운드 연결이 가능해요.
3️⃣ AWS에서 서브넷 생성하기
정보
10.0.1.0/24
라고 설정하면10.0.1.0 ~ 10.0.1.255
까지의IP 주소
범위를 가질 수 있어요.
[04-서브넷_생성]
%2F04-%25EC%2584%259C%25EB%25B8%258C%25EB%2584%25B7_%25EC%2583%259D%25EC%2584%25B1.png&w=3840&q=75)
4️⃣ AWS에서 VPC와 서브넷 사용하기
정보
기본적으로
디폴트 VPC
가 선택되어 있는데 편집을 통해서 아까 생성한VPC
를 선택하면 직접 만든 서브넷도 선택할 수 있어요.
[05-서브넷_사용]
%2F05-%25EC%2584%259C%25EB%25B8%258C%25EB%2584%25B7_%25EC%2582%25AC%25EC%259A%25A9.png&w=3840&q=75)
🌐 인터넷 게이트웨이
[06-인터넷_게이트웨이]
%2F06-%25EC%259D%25B8%25ED%2584%25B0%25EB%2584%25B7_%25EA%25B2%258C%25EC%259D%25B4%25ED%258A%25B8%25EC%259B%25A8%25EC%259D%25B4.webp&w=3840&q=75)
인터넷 게이트웨이(Internet Gateway
)는 VPC
와 인터넷 간의 통신을 가능하게 해주는 구성 요소예요.
퍼블릭 서브넷
의 리소스가 인터넷과 통신할 수 있도록 해주는 핵심 구성 요소죠.
0️⃣ 인터넷 게이트웨이의 역할
인터넷 게이트웨이를 통해 퍼블릭 서브넷에 있는 EC2 인스턴스들이 인터넷에 직접 접근할 수 있어요.
하나의 VPC에는 하나의 인터넷 게이트웨이만 연결할 수 있다는 점이 중요해요.
- 양방향 통신 지원: VPC 내의 퍼블릭 서브넷에 있는 리소스가 인터넷과 양방향으로 통신할 수 있도록 해줘요
- 고가용성 및 확장성: AWS에서 관리되며, 자동으로 확장되어 대역폭 제한이 없어요
1️⃣ 인터넷 게이트웨이 설정 방법
- 인터넷 게이트웨이 생성: AWS 콘솔에서 인터넷 게이트웨이를 생성해요
- VPC에 연결: 생성한 인터넷 게이트웨이를 해당 VPC에 연결해요
- 라우팅 테이블 업데이트: 퍼블릭 서브넷의 라우팅 테이블에 인터넷 게이트웨이로의 경로를 추가해요
- 보안 그룹 및 네트워크 ACL 설정: 인스턴스의 보안 그룹과 네트워크 ACL에서 인바운드 및 아웃바운드 트래픽을 허용하도록 설정해요
2️⃣ 양방향 통신 지원
인터넷 게이트웨이는 아웃바운드(나가는)와 인바운드(들어오는) 트래픽을 모두 지원해요.
이를 통해 웹 서버나 API 서버 같은 공개적으로 접근 가능한 서비스를 운영할 수 있어요.
퍼블릭 IP 주소나 탄력적 IP 주소를 가진 인스턴스만 인터넷 게이트웨이를 통해 인터넷과 통신할 수 있어요.
3️⃣ 인터넷 게이트웨이 생성 및 VPC 연결 과정
[07-인터넷_게이트웨이_생성]
%2F07-%25EC%259D%25B8%25ED%2584%25B0%25EB%2584%25B7_%25EA%25B2%258C%25EC%259D%25B4%25ED%258A%25B8%25EC%259B%25A8%25EC%259D%25B4_%25EC%2583%259D%25EC%2584%25B1.png&w=3840&q=75)
[08-인터넷_게이트웨이_VPC_연결]
%2F08-%25EC%259D%25B8%25ED%2584%25B0%25EB%2584%25B7_%25EA%25B2%258C%25EC%259D%25B4%25ED%258A%25B8%25EC%259B%25A8%25EC%259D%25B4_VPC_%25EC%2597%25B0%25EA%25B2%25B0.png&w=3840&q=75)
🛤️ 라우팅 테이블
[09-라우팅_테이블]
%2F09-%25EB%259D%25BC%25EC%259A%25B0%25ED%258C%2585_%25ED%2585%258C%25EC%259D%25B4%25EB%25B8%2594.webp&w=3840&q=75)
라우팅 테이블(Routing Table
)은 네트워크 트래픽의 경로를 정의하는 테이블예요.
VPC
내에서 트래픽의 흐름을 제어하는 핵심 구성 요소죠.
0️⃣ 라우팅 테이블의 역할
- 트래픽 경로 지정: 서브넷에서 나가는 트래픽이 어떤 경로로 전달될지 결정해요
- 다양한 대상 지정: 인터넷 게이트웨이, NAT 게이트웨이, 다른 서브넷 등 다양한 대상을 지정할 수 있어요
각 라우팅 테이블은 목적지(Destination)와 대상(Target)의 쌍으로 구성된 라우팅 규칙들을 포함해요.
예를 들어,0.0.0.0/0
(모든 인터넷 트래픽)을 인터넷 게이트웨이로 라우팅하는 규칙이 있어요.
1️⃣ 라우팅 테이블 생성 및 서브넷 연결
[10-라우팅_테이블_생성]
%2F10-%25EB%259D%25BC%25EC%259A%25B0%25ED%258C%2585_%25ED%2585%258C%25EC%259D%25B4%25EB%25B8%2594_%25EC%2583%259D%25EC%2584%25B1.png&w=3840&q=75)
[11-라우팅_테이블_서브넷_연결]
%2F11-%25EB%259D%25BC%25EC%259A%25B0%25ED%258C%2585_%25ED%2585%258C%25EC%259D%25B4%25EB%25B8%2594_%25EC%2584%259C%25EB%25B8%258C%25EB%2584%25B7_%25EC%2597%25B0%25EA%25B2%25B0.png&w=3840&q=75)
2️⃣ 라우팅 테이블 편집 인터넷 게이트웨이 설정
정보
라우팅 테이블의 설정이 상충하는 경우에는 더 구체적인 설정이 우선 적용
0.0.0.0/0 → internet-gateway
: 모든IPv4
트래픽을 보내는 경우 인터넷 게이트웨이로 보내는 설정10.0.0.0/16 → local
: 특정IP 주소
범위를 보내는 경우 VPC 내부(로컬)로 보내는 설정
[12-라우팅_테이블_편집_인터넷_게이트웨이_설정]
%2F12-%25EB%259D%25BC%25EC%259A%25B0%25ED%258C%2585_%25ED%2585%258C%25EC%259D%25B4%25EB%25B8%2594_%25ED%258E%25B8%25EC%25A7%2591_%25EC%259D%25B8%25ED%2584%25B0%25EB%2584%25B7_%25EA%25B2%258C%25EC%259D%25B4%25ED%258A%25B8%25EC%259B%25A8%25EC%259D%25B4_%25EC%2584%25A4%25EC%25A0%2595.png&w=3840&q=75)
🔄 NAT 게이트웨이
[14-NAT_게이트웨이_위치]
%2F14-NAT_%25EA%25B2%258C%25EC%259D%25B4%25ED%258A%25B8%25EC%259B%25A8%25EC%259D%25B4_%25EC%259C%2584%25EC%25B9%2598.webp&w=3840&q=75)
NAT 게이트웨이
(Network Address Translation Gateway
)는 프라이빗 서브넷
의 인스턴스가 인터넷에 아웃바운드 트래픽을 보낼 수 있도록 하면서, 외부에서의 인바운드 트래픽은 차단하는 역할을 해요.
즉 외부에서는 내부로 접근할 수 없지만, 내부에서 외부로의 접근은 가능하게 해주는 출입구에요.
NAT 게이트웨이
는 퍼블릭 서브넷
에 위치하며, 프라이빗 서브넷
의 인스턴스가 인터넷에 접속할 수 있도록 해줘요.
( 프라이빗 서브넷
→ 퍼블릭 서브넷
→ NAT 게이트웨이
→ 인터넷 게이트웨이
)
정보
라우팅 테이블의 설정이 상충하는 경우에는 더 구체적인 설정이 우선 적용
0.0.0.0/0 → nat-gateway
: 모든IPv4
트래픽을 보내는 경우 NAT 게이트웨이로 보내는 설정10.0.0.0/16 → local
: 특정IP 주소
범위를 보내는 경우 VPC 내부(로컬)로 보내는 설정
[18-라우팅_테이블_편집_인터넷_게이트웨이_설정]
%2F18-%25EB%259D%25BC%25EC%259A%25B0%25ED%258C%2585_%25ED%2585%258C%25EC%259D%25B4%25EB%25B8%2594_%25ED%258E%25B8%25EC%25A7%2591_%25EC%259D%25B8%25ED%2584%25B0%25EB%2584%25B7_%25EA%25B2%258C%25EC%259D%25B4%25ED%258A%25B8%25EC%259B%25A8%25EC%259D%25B4_%25EC%2584%25A4%25EC%25A0%2595.png&w=3840&q=75)
0️⃣ NAT 게이트웨이의 역할
- 아웃바운드 인터넷 접속 지원:
프라이빗 서브넷
의 인스턴스가 인터넷으로 나가는 트래픽을 허용해요 - 인바운드 트래픽 차단: 외부에서
프라이빗 서브넷
의 인스턴스로의 직접적인 접속은 차단해요
프라이빗 서브넷의 인스턴스들이 소프트웨어 업데이트, 패키지 다운로드, 외부 API 호출 등을 할 수 있지만, 외부에서 직접 접근할 수는 없게 해줘요.
이는 보안상 매우 중요한 기능이에요.
1️⃣ NAT 게이트웨이의 종류
- 퍼블릭 NAT 게이트웨이: 퍼블릭 서브넷에 위치하며, 프라이빗 서브넷의 인스턴스가 인터넷에 접속할 수 있도록 해줘요
- 프라이빗 NAT 게이트웨이: 프라이빗 서브넷에 위치하며, 다른 VPC나 온프레미스 네트워크와의 통신을 지원해요
일반적으로 퍼블릭 NAT 게이트웨이를 많이 사용해요.
2️⃣ NAT 게이트웨이 생성 및 퍼블릭 서브넷 배치
정보
퍼블릭 서브넷
위치에NAT 게이트웨이
생성해야 하는 것을 인지해야 해요.
[15-NAT_게이트웨이_생성]
%2F15-NAT_%25EA%25B2%258C%25EC%259D%25B4%25ED%258A%25B8%25EC%259B%25A8%25EC%259D%25B4_%25EC%2583%259D%25EC%2584%25B1.png&w=3840&q=75)
[16-프라이빗_라우팅_테이블_생성]
%2F16-%25ED%2594%2584%25EB%259D%25BC%25EC%259D%25B4%25EB%25B9%2597_%25EB%259D%25BC%25EC%259A%25B0%25ED%258C%2585_%25ED%2585%258C%25EC%259D%25B4%25EB%25B8%2594_%25EC%2583%259D%25EC%2584%25B1.png&w=3840&q=75)
[17-프라이빗_라우팅_테이블_서브넷_연결]
%2F17-%25ED%2594%2584%25EB%259D%25BC%25EC%259D%25B4%25EB%25B9%2597_%25EB%259D%25BC%25EC%259A%25B0%25ED%258C%2585_%25ED%2585%258C%25EC%259D%25B4%25EB%25B8%2594_%25EC%2584%259C%25EB%25B8%258C%25EB%2584%25B7_%25EC%2597%25B0%25EA%25B2%25B0.png&w=3840&q=75)
🛡️ 베스천 호스트
베스천 호스트(Bastion Host
)는 외부에서 프라이빗 서브넷의 인스턴스에 안전하게 접속하기 위한 중간 서버예요.
마치 성의 출입문 같은 역할을 한다고 생각하시면 돼요.
0️⃣ 베스천 호스트의 역할
- 보안 강화: 프라이빗 서브넷의 인스턴스에 직접 접근하지 않고, 베스천 호스트를 통해서만 접근함으로써 보안을 강화해요
- 접근 제어: 베스천 호스트에 대한 접근을 제한하여, 특정 IP 주소나 사용자만 접근할 수 있도록 설정할 수 있어요
외부에서 프라이빗 서브넷의 서버들에 직접 접근할 수 없으므로, 퍼블릭 서브넷에 위치한 베스천 호스트를 경유하여 접근해요.
이를 통해 보안을 강화하면서도 필요한 관리 작업을 수행할 수 있어요.
3️⃣ 베스천 호스트 접근 흐름
- 외부 → 베스천 호스트: 관리자가 인터넷을 통해 베스천 호스트에
SSH
접속 - 베스천 호스트 → 프라이빗 서버: 베스천 호스트에서 프라이빗 서브넷의 서버로
SSH
접속 - 관리 작업 수행: 프라이빗 서버에서 필요한 관리 작업 실행
이러한 접근 방식을 통해 프라이빗 서브넷의 보안을 유지하면서도 필요한 관리 작업을 안전하게 수행할 수 있어요.
유용한 팁외부에서 베스천 호스트로
.pem
파일 전달하는 방법
# 키 페어 파일 보안을 위한 권한 설정 $ chmod 400 "web-server.pem" $ ssh -i "web-server.pem" ubuntu@[EC2 인스턴스의 Public IP] # scp -i [EC2 접근을 위한 키 페어 파일] [전송할 파일명] [서버 username]@[EC2 인스턴스의 Public IP]:[전송 받을 파일 위치] $ scp -i web-server.pem instagram-server.pem ubuntu@[EC2 인스턴스의 Public IP]:~/
⚡ 가용성
가용성(Availability)이란 시스템이 서비스를 정상적으로 제공할 수 있는 가능성을 의미해요.
0️⃣ 시스템 이중화
시스템 이중화라는 건 시스템의 일부분을 사용할 수 없게 되어도 다른 시스템을 이용하여 서비스를 계속 이용할 수 있게 만드는 걸 의미해요.
1️⃣ 가용 영역
가용 영역(Availability Zone)이란 하나의 리전 내에 여러 개의 데이터 센터가 있어요.
각 가용 영역은 독립적인 전원과 네트워크를 가지고 있어요.
가용 영역은 데이터 센터 하나를 의미해요.
🔒 보안 그룹
0️⃣ 보안 그룹의 역할
보안 그룹은 인스턴스에 대한 인바운드와 아웃바운드 트래픽을 제어하는 가상 방화벽이에요.
보안 그룹은 인스턴스의 보안을 유지하면서도 필요한 트래픽을 허용해요.
1️⃣ 인바운드와 아웃바운드 트래픽
- 인바운드 트래픽: 외부에서 인스턴스로 들어오는 트래픽
- 아웃바운드 트래픽: 인스턴스에서 외부로 나가는 트래픽
🎉 마무리
이 강의는 강의시간 대비해서 가격이 비싸서 구매하기전에 고민을 많이 했어요.
일반적으로 AWS 강의는 일단 배포하는 방법을 중점으로 알려주지 VPC, 서브넷, 인터넷 게이트웨이 등 AWS에서 기본적으로 처리해주는 부분은 거의 다루지 않아요.
그래서 이 강의에 흥미가 생겼고 강의 평가가 좋아보여서 구매했는데 만족스럽게 들었어요.
가장 만족스러웠던점은 탄탄한 강의자료와 실습할 수 있는 커리큘럼인 것 같아요.
사실 실제로 해보지 않으면 그 순간만 기억하게 되는거고, 다른 강의들은 직접 생각해서 실습해야하는데 여기는 실습 방법과 답안을 제시해줘서 좋았어요.
머리속에 완벽하게 각 개념들이 자리잡지는 않았지만 이전에 만들어서 배포해봤고, 현재 수정하고 있는 사이드 프로젝트가 하나 있는데 그거를 다시 배포할때는 이 강의에서 알려준 흐름대로 배포해보려고 해요.
물론 .. 베스천 호스트, 고가용성, 시스템 이중화 등의 완전히 필수적인 기능이 아니라 보안을 위해 사용하는데 비용이 나오는 부분은 제외하려고 해요 .. 🥲
( 혹시 서비스로 수입이 생긴다면 적용할 생각은 있어요 )
💡 팁
0️⃣ EC2 호스트명 변경 방법
# 호스트명 변경 sudo vim /etc/hostname # 입력 후 저장 후 다시시작하면 적용됨 sudo reboot